1. Field of the Invention
The present invention relates to a technology for performing digital communications with packets.
2. Description of the Related Art
The demand for the amounts of data that is passed through a network is increasing more and more with development of a computer network, but performance of the network cannot be made effective use of, according to the nature of a Transmission Control Protocol (TCP) which is a standard protocol for the network.
For this reason, Random Parity Stream (RPS) codes have been proposed. A User Datagram Protocol (UDP) has an advantage being a high transmission rate and a disadvantage being low reliability. In order to cover the disadvantage when transmission data is sent by a UDP packet, the RPS codes are used so that the low reliability is covered with Forward Error Correction (FEC).
In UDP packet communication, a technique of sending UDP packets at intervals according to the size of a line is used to prevent line congestion. In this technique, however, the UDP packets are uniformly transmitted at a transmission interval set for each line. Therefore, changes in congestion situations, for example, the identical line is used by another communication, cannot be detected, and hence, data cannot be transmitted at an appropriate speed for each line.
More specifically, if another communication is the UDP communication, then the line congestion further increases because the communication is not controlled by the two so as to avoid congestion. On the other hand, if another communication is TCP-based, then the congestion situations are obtained only by TCP and the congestion control is performed so that the transmission rate is reduced. This restricts data communication by the TCP packets.
One approach to realize high speed communication is to include a congestion control in the UDP communication thereby having a high affinity with the TCP. Such a flow control device is disclosed in, for example, Japanese Patent Application Laid-Open (JP-A) No. H11-163936. This flow control device decides a packet transmission speed based on Round Trip Time (RTT) (a difference between an acknowledgement arrival time and a packet transmission time) and information whether packet abandonment is needed, by using a algorism of an optimal packet transmission speed.
More specifically, when the acknowledgement (ACK) arrives from a data reception-side terminal, the flow control device obtains the RTT and the information, determines a feature amount indicating a state of a packet network based on the RTT and the information obtained, and identifies a parameter indicating a relation between the feature amount and the packet transmission speed, to decide an optimal packet transmission speed based on the parameter identified.
In the conventional technology, however, a calculation equation (e.g., calculation algorism for an optimal packet transmission speed) used to perform the congestion control is complicated, or packets need to be periodically transmitted at an extremely short period. Therefore, a heavy load can be exerted on a computer with non-real-time operating system (OS).
That is, in a network communication, if data exceeding the capacity (speed) of a communication channel passes through a channel, an excess of the data (packet) can be lost. Therefore, in order not to cause the packet to be lost, a data transmission-side terminal needs to transmit data at frequencies within the capacity of the communication channel. However, in order to periodically transmit a packet at an extremely short period based on the non-real-time OS, there is only one method of using a loop instruction or issuing an interrupt instruction at an accurate interval using specific hardware.
To explain this more specifically, the overview of time management for non-real-time multitask OS and some problems with this OS are explained. Since it is generally considered that calculation capacity of the OS is a kind of resources, the calculation capacity needs to be shared by a plurality of tasks (processes). Therefore, if it is desired that a process is caused to be performed at a fixed interval, such a process as follows should not be performed because the load is concentrated on this task. That is, the process is such that the time is monitored by the loop instruction and the process is executed when a predetermined interval passes.
In a task program, the following interrupt instructions are desired to be used instead of the loop instruction. The interrupt instructions are such as “Suspend for a fixed time, return the calculation capacity to the system” (Sleep) and “Issue an interrupt when a predetermined time passes” (alarm, WM_TIMER). In the non-real-time OS, a difference between times that can be set by such instructions (Sleep) (alarm, WM_TIMER) is about 20 to 50 milliseconds, which is not accurate at all.
Consequently, even if the packet is to be transmitted at a speed suitable for a network in an application layer, only the loop instruction has to be used because the difference with respect to the set time is large when the interrupt instruction is used. Thus, the calculation capacity is inevitably occupied by implementation of the congestion control. Furthermore, another method of issuing an interrupt instruction at an accurate interval using specific hardware can be considered, but the specific hardware is newly required in this case.